using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

namespace RC.ControlAcceso.BaseDatos
{
    public class CATareaBD:TablaBase
    {
        #region Variables
        private int midTarea;
        private string mDescripcion;
        private bool _estaActivo;
        #endregion

        #region Propiedades
        public int idTarea
        {
            get { return midTarea; }
            set { midTarea = value; }
        }

        public string Descripcion
        {
            get  { return mDescripcion; }
            set  { mDescripcion = value;}
        }
        public bool EstaActivo
        {
            get { return _estaActivo; }
            set { _estaActivo = value; }
        }
        #endregion
        
        #region Constructores
        public CATareaBD()
        {
            ValoresIniciales();
        }

        private void ValoresIniciales()
        {
            midTarea = -1;
            _estaActivo = true;
        }

        public CATareaBD(int pidTarea)
        {
            ValoresIniciales();
            midTarea = pidTarea;
            Editar();
        }
        #endregion

        #region Metodos
        protected override void AsignarSP()
        {
            SPInsertar = "CATareaInsertar";
            SPSeleccionar = "CATareaSeleccionar";
            SPActualizar = "CATareaActualizar";
            SPEditar = "CATareaEditar";
            SPRecuperar = "CATareaRecuperar";
        }

        protected override System.Data.SqlClient.SqlParameter[] AsignaParametros(string pNombreSP)
        {
            SqlParameter[] Param;
            SqlParameter Parametro;
            switch (pNombreSP)
            {
                case "CATareaInsertar":
                case "CATareaActualizar":
                    Param = new SqlParameter[3];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTarea";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = midTarea;
                    Param[0] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Descripcion";
                    Parametro.SqlDbType = SqlDbType.VarChar;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mDescripcion;
                    Param[1] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@EstaActivo";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = EstaActivo;
                    Param[2] = Parametro;

                    return Param;

                case "CATareaEditar":
                    Param = new SqlParameter[1];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTarea";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = midTarea;
                    Param[0] = Parametro;

                    return Param;

                default: return null;
            }
        }

        protected override void AsignarDatos(System.Data.SqlClient.SqlDataReader pDatos)
        {
            mDescripcion = pDatos.GetString(pDatos.GetOrdinal("Descripcion")).Trim();
            try
            {
                EstaActivo = pDatos.GetBoolean(pDatos.GetOrdinal("EstaActivo"));
            }
            catch { EstaActivo = true; }
        }
        #endregion
    }
}